package cj.web.portal.controllers;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import cj.utils.Constants;
import cj.utils.DateUtils;
import cj.web.admin.constants.CategoryEnum;
import cj.web.portal.dao.ConfigDAO;
import cj.web.portal.dao.LineDAO;
import cj.web.portal.dao.PaperDAO;
import cj.web.portal.utils.ConfigConstants;
import net.paoding.rose.web.annotation.Param;
import net.paoding.rose.web.annotation.Path;
import net.paoding.rose.web.annotation.rest.Get;
import net.paoding.rose.web.var.Model;
import net.sf.json.JSONObject;

/**
 * 报刊媒体二级页面
 * 
 * @author hejia
 *
 *         2015年12月29日
 */
@Path("paper")
public class PaperController {
	@Autowired
	PaperDAO paperDao;
	@Autowired
	private LineDAO lineDAO;
	@Autowired
	private ConfigDAO configDAO;
	
	//报刊媒体
	@Get("bkmt")
	public String showBKMT(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/bkmt.vm";
	}
	
	//武汉宣
	@Get("whx")
	public String showWHX(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/whx.vm";
	}
	
	//彩经
	@Get("cj")
	public String showCJ(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cj.vm";
	}
	
	//长江周刊
	@Get("cjzb")
	public String showCJZB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cjzb.vm";
	}

	//投资时报
	@Get("tzsb")
	public String showTZSB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/tzsb.vm";
	}
	
	//长江日报
	@Get("cjrb")
	public String showCjrb(Model model) {
		model.add("head", "bkmt");
		
		//首页LB
		List<Map> pics = configDAO.queryByCode(ConfigConstants.CJRB_LB);
		
		//动态新闻
		List<Map> objs = jtpphd(String.valueOf(CategoryEnum.CJRB_ZXDT.getValue()),8);
		
		//动态图片新闻
		List<Map> queryByImages = queryByImageIsNotNull(String.valueOf(CategoryEnum.CJRB_ZXDT.getValue()));
		
		if (queryByImages != null && queryByImages.size() > 0) {
			model.add("top", queryByImages.get(0));
		}
		else
		{
			model.add("top", objs.get(0));
		}
		
		model.add("pics", pics);
		model.add("cjrbpaperls", objs);//长江日报最新动态
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cjrbpaper.vm";
	}
	
	//长江日报简介页
	@Get("cjrbjj")
	public String showCJRBJJ(Model model){
		model.add("memu", "cjrbjj");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cjrb/cjrbjj.vm";
	}

	//武汉晚报
	@Get("whwb")
	public String showWhwb(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/whwbpaper.vm";
	}

	//武汉晨报
	@Get("whcb")
	public String showWhcb(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/whcbpaper.vm";
	}
	
	//现代健康报
	@Get("xdjkb")
	public String showXDJKB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/xdjkb.vm";
	}
	
	//人物汇报
	@Get("rwhb")
	public String showRWHB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/rwhb.vm";
	}
	
	//武汉商报•加油
	@Get("whsbjy")
	public String showWHSBJY(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/whsbjy.vm";
	}
	
	//考试指南报
	@Get("ksznb")
	public String showKSZNB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/ksznb.vm";
	}
	
	//长江传媒研究
	@Get("cjcmyjy")
	public String showCJCMYJY(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cjcmyjy.vm";
	}
	
	//现代少年报
	@Get("xdsnb")
	public String showXDSNB(Model model) {
		model.add("head", "bkmt");
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/xdsnb.vm";
	}
	
	/**
	 * 子报最新动态 列表页
	 * @param model
	 * @param zxdtCategory
	 * @param start
	 * @param length
	 * @return
	 */
	@Get("more")
	public String more(Model model, @Param("category")int category){		
		model.add("category",category);//子报最新动态
		model.add("categoryName", CategoryEnum.getName(category).substring(5));
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		
		if(CategoryEnum.CJRB_ZXDT.getValue()==category)
		{
			return "paper/cjrb/list.vm";
		}
		return "paper/cjrb/brandlst.vm";
	}
	
	@Get("lst")
	public String lst(Model model, @Param("category")int category, @Param("start") int start,
			@Param("length") int length){
		JSONObject jo = new JSONObject();
		jo.put("returnFlag", Constants.returnObj.returnFlag_true);
		
		List<Map> list = formMap(category,start*length,length);
		
		jo.put("list",list);
		
		return "@" + jo.toString();
	}
	
	/**
	 * 子报最新动态 详情页
	 * @param model
	 * @param id
	 * @return
	 */
	@Get("detail")
	public String detail(Model model, @Param("id")String id){
		List<Map> lst = paperDao.queryById(id);	
		String category = "";
		if (lst !=null && lst.size()>0) {
			model.add("id", lst.get(0).get("id"));
			model.add("title", lst.get(0).get("title"));
			model.add("abstractInfor", lst.get(0).get("abstractInfor"));
			model.add("carouselImage", lst.get(0).get("carouselImage"));
			model.add("content", lst.get(0).get("content"));
			model.add("author", lst.get(0).get("author"));
			model.add("source", lst.get(0).get("source"));
			model.add("releaseAT", DateUtils.getDateTime2Str(DateUtils.parse(lst.get(0).get("releaseAT").toString()),
					DateUtils.DATE_FULL_STR));
			
			category = lst.get(0).get("category").toString();//分类
			model.add("category",category);//分类
			
			model.add("categoryName", CategoryEnum.getName(Integer.parseInt(lst.get(0).get("category").toString())).substring(5));
		}
		
		model.add("jtpcjtts", jtpphd(category,5));//集团长江头条列表
		model.add("jtpphdls", jtpphd(String.valueOf(CategoryEnum.CJTT_PPHD.getValue()),5));//集团品牌活动列表
		return "paper/cjrb/detail.vm";
	}
	
	@Get("list")
	public String list(Model model, @Param("category")int category, @Param("start") int start,
			@Param("length") int length){
		JSONObject jo = new JSONObject();
		jo.put("returnFlag", Constants.returnObj.returnFlag_true);
		
		List<Map> list = formMap(category,start*length,length);
		
		jo.put("list",list);
		
		return "@" + jo.toString();
	}
	
	private List<Map> formMap(int categery,int start,int length) {
		List<Map> arrNews = paperDao.query(categery, start, length);

		List<Map> resNews = new ArrayList<Map>();
		for (Map news : arrNews) {
			Map result = new HashMap();
			result.put("id", news.get("id"));
			result.put("title", news.get("title"));
			result.put("abstractInfor", news.get("abstractInfor"));
			result.put("carouselImage", news.get("carouselImage"));
			result.put("content", news.get("content"));
			result.put("author", news.get("author"));
			result.put("source", news.get("source"));
			result.put("releaseAT",DateUtils.getMinusTime(news.get("releaseAT").toString(),DateUtils.DATE_FULL_STR,0));

			resNews.add(result);
		}

		return resNews;
	}
	
	/**
	 * 查询第一个有图的报刊动态
	 * @param category
	 * @return
	 */
	private List<Map> queryByImageIsNotNull(String category)
	{
		//集团品牌活动
		List<Map> ppls = lineDAO.queryByImageIsNotNull(category, 0, 1);
		List<Map> pphdls = new ArrayList<Map>();
		for(Map rep :ppls)
		{
			Map l_rep = new HashMap();
			l_rep.put("id", rep.get("id"));//ID
			String title=rep.get("title").toString();
			if(title.length()>15)
			{
				title=title.toString().substring(0, 15)+"...";
			}
			l_rep.put("title", title);//标题
			l_rep.put("abstractInfor", rep.get("abstractInfor"));//简介
			//缩率图
			String carouselImage = rep.get("carouselImage")==null?"":rep.get("carouselImage").toString();
//			if(carouselImage !=null && !"".equals(carouselImage))
//			{
//				String carouselImages[] = carouselImage.split("/");
//				l_rep.put("carouselImage", carouselImages[0]+"/s_"+carouselImages[1]);//缩率图
//			}
//			else
//			{
//				l_rep.put("carouselImage", "");//缩率图
//			}
			l_rep.put("carouselImage", carouselImage);//缩率图
			l_rep.put("releaseAT", DateUtils.getMinusTime(rep.get("releaseAT").toString(),DateUtils.DATE_SMALL_STR,0));//发布时间
			pphdls.add(l_rep);
		}
		return pphdls;
	}

	/**
	 * 集团down
	 * @param category
	 * @return
	 */
	private List<Map> jtpphd(String category,int length)
	{
		//集团品牌活动
		List<Map> ppls = lineDAO.query(category, 0, length);
		List<Map> pphdls = new ArrayList<Map>();
		for(Map rep :ppls)
		{
			Map l_rep = new HashMap();
			l_rep.put("id", rep.get("id"));//ID
			String title=rep.get("title").toString();
			if(title.length()>20)
			{
				title=title.toString().substring(0, 20)+"...";
			}
			l_rep.put("title", title);//标题
			l_rep.put("abstractInfor", rep.get("abstractInfor"));//简介
			//缩率图
			String carouselImage = rep.get("carouselImage")==null?"":rep.get("carouselImage").toString();
//			if(carouselImage !=null && !"".equals(carouselImage))
//			{
//				String carouselImages[] = carouselImage.split("/");
//				l_rep.put("carouselImage", carouselImages[0]+"/s_"+carouselImages[1]);//缩率图
//			}
//			else
//			{
//				l_rep.put("carouselImage", "");//缩率图
//			}
			l_rep.put("carouselImage", carouselImage);//缩率图
			l_rep.put("releaseAT", DateUtils.getMinusTime(rep.get("releaseAT").toString(),DateUtils.DATE_SMALL_STR,0));//发布时间
			pphdls.add(l_rep);
		}
		return pphdls;
	}
}
